package com.it.d12_integer;

import java.util.ArrayList;

public class Test {
    public static void main(String[] args) {
        // 目标：掌握包装类的使用

        // 已过时
        //  Integer a1 = new Integer(12);

        Integer a2 = Integer.valueOf(12);
        System.out.println(a2);

        // 自动装箱：可以自动把基本类型的数据转换成对象
        Integer a3 = 12;

        // 自动拆箱：可以自动把包装类型的对象转换成对应的基本数据类型
        // a3是包装类型的对象;a4是基本类型变量
        // 把 a3 赋值给 a4;a3里的12拆出来给 a4
        int a4 = a3;

        // 泛型和集合不支持基本数据类型，只能支持引用数据类型
        // ArrayList<int> list = new ArrayList<>(); // 泛型和集合不支持基本数据类型，只能支持引用数据类型

        ArrayList<Integer> list = new ArrayList<>();
        list.add(12); // 自动装箱; 把12自动变成一个对象扔到集合里面
        list.add(16); // 自动装箱

        int rs = list.get(1); // 自动拆箱

        System.out.println("----------------------------------------");

        // 1.把基本类型的数据转换成字符串
        Integer a = 23;
        String rs1 = Integer.toString(a); // "23" 把整型转换成字符串
        System.out.println(rs1 + 1); // "231"

        String rs2 = a.toString(); // "23"
        System.out.println(rs2 + 1); // "231"

        String rs3 = a + ""; // "23"
        System.out.println(rs2 + 1); // "231"


        // 2.可以把字符串类型的数值转换成数值本身对应的数据类型
        String ageStr = "29";
        // int ageI = Integer.parseInt(ageStr); // 29 把字符串转换成整型
        int ageI = Integer.valueOf(ageStr); // 29 把字符串转换成整型
        System.out.println(ageI + 1);

        String scoreStr = "99.5";
        //double score = Double.parseDouble(scoreStr); //99.5 把字符串转换成double类型
        double score = Double.valueOf(scoreStr); //99.5 把字符串转换成double类型
        System.out.println(score + 0.5);
    }
}
